import Vue from 'vue'
import Vuex from 'vuex'
//  1. 导入 vuex 的插件
import creteState from 'vuex-persistedstate'
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({
  plugins: [creteState()],
  state: {
    // 登录成功之后的 token 值
    token: '',
    // 用户的基本信息
    userinfo: {}
  },
  mutations: {
    // 更新 token 的 mutation 函数
    updateToken(state, newToken) {
      state.token = newToken
    },
    // 更新用户信息的 mutation 函数
    updateUserInfo(state, obj) {
      state.userinfo = obj
    }
  },
  actions: {
    // 调用接口, 请求用户的基本信息
    // ctx 就是 new 出来的  store 的实例
    async initUserInfo(ctx) {
      const { data: res } = await axios.get('/my/userinfo', {
        // params: {
        // 把 token 通过自定义的请求头发送给服务器
        // headers: {
        //   Authorization: ctx.state.token
        // }
        // }
      })

      // console.log(res)
      // 判断数据是否获取成功, 调用指定名称的 mutation 函数, 把数据保存到state中
      if (res.code === 0) {
        ctx.commit('updateUserInfo', res.data)
      }
    }
  },
  modules: {
  }
})
